<?php
/**
 * Created by JiangYongJian.
 * User: JiangYongJian
 * Date: 2019/10/24
 * Time: 19:59
 */

namespace app\Cronjob;

use Hhxsv5\LaravelS\Swoole\Timer\CronJob;

class Test1CronJob extends CronJob
{
    // !!! 定时任务的`interval`和`isImmediate`有两种配置方式（二选一）：一是重载对应的方法，二是注册定时任务时传入参数。
    // --- 重载对应的方法来返回配置：开始
    public function interval()
    {
        return 1000;// 每1秒运行一次
    }

    public function isImmediate()
    {
        return false;// 是否立即执行第一次，false则等待间隔时间后执行第一次
    }

    // --- 重载对应的方法来返回配置：结束
    public function run()
    {
        $fp = fopen("cron_job.txt", "a");
        @fwrite($fp, "run2-->" . date('Y-m-d H:i:s') . "\n");

        // do something
        // sleep(1); // Swoole < 2.1
        //Coroutine::sleep(1); // Swoole>=2.1 run()方法已自动创建了协程。

        //@fwrite($fp, "end-->" . microtime(true) . "\n");

        @fclose($fp);
        // throw new \Exception('an exception');// 此时抛出的异常上层会忽略，并记录到Swoole日志，需要开发者try/catch捕获处理
    }
}